package com.gradumate.server;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.logging.Logger;

import org.apache.commons.httpclient.URI;
import org.apache.commons.httpclient.URIException;

public class HttpClient {

	// Logger
	private static final Logger log = Logger.getLogger(HttpClient.class.getName());

	/**
	 * Haalt de externe inhoud van een website op
	 * @param String de URL die opgehaald moet worden strUrl
	 * @return String met de inhoud van de externe pagina.
	 */
	public String getFromUrl(String strUrl) {
		
		String result = "";
		
		try {
			// URL object ophalen
			URL url = new URL(encodeUrl(strUrl));
			
			// Content ophalen en in string zetten
			BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream()));
			String line;
			while ((line = reader.readLine()) != null) {
				result += line;
			}
		
		} catch (MalformedURLException e) {
			log.info("MalformedURLException: " + e.getMessage());
		} catch (IOException e) {
			log.info("IOException: " + e.getMessage());
		}
		return result;
	}
	
	@SuppressWarnings("deprecation")
	/**
	 * Omdat ik de spaties niet vervangen kreeg met regex voor %20 tekens heb ik deze functie gebruikt.
	 * 
	 * @param String url die encode moet worden
	 * @return String encoded url.
	 */
	private String encodeUrl(String url) {

		URI strUriIn = null;
		URI strUriOut = null;
		try {
			strUriIn = new URI(url);
			strUriOut = new URI(
					strUriIn.getScheme(), 
					null, 
					strUriIn.getHost(),
					strUriIn.getPort(), 
					strUriIn.getPath(),
					strUriIn.getQuery(), 
					strUriIn.getFragment());
		} catch (URIException e) {
			log.info("Kon URL niet opbouwen: " + e.getMessage());
		}
		
		log.info("URL: " + strUriOut.getEscapedURI());
		
		return strUriOut.getEscapedURI();
	}
}
